﻿#ifndef EVENT_THRESHOLD_H
#define EVENT_THRESHOLD_H
// system
#include <stdint.h>
// event
#include "lane_def.h"

// 检测区域定义（用于计算占有率）
typedef struct
{
    union
    {
        struct
        {
            float y_start;           // 起始Y坐标（道路方向）
            float y_end;            // 结束Y坐标
        };
        float zone[2];
    };
} DetectionZone;

// 通用阈值模板（适用于所有事件类型）
typedef struct 
{
    uint16_t duration_ms;           // 持续时长要求（毫秒）
    uint16_t duration_stamp;      // 持续时长要求帧数
	float upper_multiplier;          // 上限系数（如1.1）
	float lower_multiplier;           // 下限系数（如0.5）
} EventThreshold;

// 速度阈值
typedef struct 
{
    EventThreshold detect_Threshold;       // 检测阈值
    float absolute_min_speed;                   // 绝对下限，等同于静止
    float traffic_jam_speed;                        // 认为有拥堵的速度
}speedThreshold;

// 事件检测阈值
typedef struct 
{
    speedThreshold speed;                        // 速度阈值
    EventThreshold reversed_driving;        // 逆行阈值
    EventThreshold lane_change;              // 非法变道阈值
} TrafficEventThresholds;

// 道路信息
typedef struct 
{
	laneDirection* moveDirection;           // 行驶方向
	laneType* type;                                  // 道路线对应虚实
	float* min_kph;                                  // 速度下限
	float* max_kph;                                 // 速度上限
    DetectionZone* zones;                     // 检测区域
    float* detection_line;                        // 检测断面位置
}TrafficRoadInfoDef;

// 事件参数配置
typedef struct 
{
    uint16_t major_version;                         // 主版本号
    uint16_t minor_version;                         // 次版本号
    TrafficEventThresholds paramsThr;       // 事件检测阈值
    TrafficRoadInfoDef parameRoad;          // 道路参数
} EventConfiguration;
#endif // EVENT_THRESHOLD_H